package ThreadPool.jike.demo43;

public final class STM {

    static final Object lock = new Object();

    // 私有化构造,不让new
    private STM(){
        // 提交数据需要用到全局锁

        // 原子化提交方法
        // atomic();
    }

    public static void atomic(TxnRunnable action) {
        boolean committed = false;
        //如果没有提交成功，则一直重试
        while (!committed) {
            //创建新的事务
            STMTxn txn = new STMTxn();
            //执行业务逻辑
            action.run(txn);
            //提交事务
            committed = txn.commit();
        }
    }
}
